/*
 * Copyright 2008-2009 Aying.Net Powered by Fuchun.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *     http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package net.aying.util.image;

import java.io.Serializable;

/**
 * {@code ImageScaleSetting} 类封装要缩放的图片的属性信息。
 * 
 * @author Fuchun
 * @version 1.0, 2009-7-2
 */
public class ImageScaleSetting implements Serializable {

    private static final long      serialVersionUID    = 1L;

    /* 默认的 ImageScaleSide 实例。 */
    static final ImageScaleSetting DEFALUT_INSTANCE    = new ImageScaleSetting();

    /** 缩放生成的大图文件的默认后缀。 */
    public static final String     BIG_IMAGE_SUFFIX    = "_big.jpg";

    /** 缩放生成的中图文件的默认后缀。 */
    public static final String     MEDIUM_IMAGE_SUFFIX = "_medium.jpg";

    /** 缩放生成的小图文件的默认后缀。 */
    public static final String     SMALL_IMAGE_SUFFIX  = "_small.jpg";

    /** 缩放生成的缩略图文件的默认后缀。 */
    public static final String     THUMB_IMAGE_SUFFIX  = "_thumb.jpg";

    /** 缩放生成的方块图文件的默认后缀。 */
    public static final String     SQUARE_IMAGE_SUFFIX = "_square.jpg";

    /** 表示对指定的尺寸不进行缩放操作。 */
    public static final int        NO_SCALE            = -1;

    /** 压缩的大图片默认的最大宽度或高度。 */
    public static final int        DEFAULT_BI_SIDE     = 1024;

    /** 压缩的中型图片默认的最大宽度或高度。 */
    public static final int        DEFAULT_MI_SIDE     = 640;

    /** 压缩的小型图片默认的最大宽度或高度。 */
    public static final int        DEFAULT_SI_SIDE     = 240;

    /** 压缩的缩略图片默认的最大宽度或高度。 */
    public static final int        DEFAULT_TI_SIDE     = 120;

    /** 压缩的方块图片默认的边长。 */
    public static final int        DEFAULT_SQI_SIDE    = 80;

    /* 压缩的大图片最大宽度或高度。 */
    private int                    bigImageSide        = DEFAULT_BI_SIDE;

    /* 压缩的中型图片最大宽度或高度。 */
    private int                    mediumImageSide     = DEFAULT_MI_SIDE;

    /* 压缩的小图片最大宽度或高度。 */
    private int                    smallImageSide      = DEFAULT_SI_SIDE;

    /* 压缩的缩略图片最大宽度或高度。 */
    private int                    thumbImageSide      = DEFAULT_TI_SIDE;

    /* 压缩的方块图的边长。 */
    private int                    squareImageSide     = DEFAULT_SQI_SIDE;

    /* 压缩生成的大图片路径。 */
    private String                 bigImage;

    /* 压缩生成的中型图片路径。 */
    private String                 mediumImage;

    /* 压缩生成的小图片路径。 */
    private String                 smallImage;

    /* 压缩生成的缩略图路径。 */
    private String                 thumbImage;

    /* 压缩生成的方块图路径。 */
    private String                 squareImage;

    /**
     * 返回默认的 {@code ImageScaleSetting} 实例。
     * 
     * @return 默认的 {@code ImageScaleSetting} 实例。
     */
    public static ImageScaleSetting getDefaultInstance() {
        return DEFALUT_INSTANCE;
    }

    /**
     * 构造一个新的 {@code ImageScaleSetting} 实例。
     */
    public ImageScaleSetting() {
        super();
    }

    /**
     * 根据给定的各种压缩比例的图片边长构造一个新的 {@code ImageScaleSetting} 实例。
     * 
     * @param big 压缩的大图片的最大宽度或高度。
     * @param medium 压缩的中型图片的最大宽度或高度。
     * @param small 压缩的小图片的最大宽度或高度。
     * @param thumb 压缩的缩略图的最大宽度或高度。
     * @param square 压缩的方块图的边长。
     */
    public ImageScaleSetting(int big, int medium, int small, int thumb, int square) {
        this.bigImageSide = big;
        this.mediumImageSide = medium;
        this.smallImageSide = small;
        this.thumbImageSide = thumb;
        this.squareImageSide = square;
    }

    /**
     * 返回压缩的大图片最大宽度或高度。
     * 
     * @return 压缩的大图片最大宽度或高度。
     */
    public int getBigImageSide() {
        return bigImageSide;
    }

    /**
     * 设置压缩的大图片最大宽度或高度。
     * 
     * @param bigImageSide 要设置的 压缩的大图片最大宽度或高度。
     */
    public void setBigImageSide(int bigImageSide) {
        this.bigImageSide = bigImageSide;
    }

    /**
     * 返回压缩的中型图片最大宽度或高度。
     * 
     * @return 压缩的中型图片最大宽度或高度。
     */
    public int getMediumImageSide() {
        return mediumImageSide;
    }

    /**
     * 设置压缩的中型图片最大宽度或高度。
     * 
     * @param mediumImageSide 要设置的 压缩的中型图片最大宽度或高度。
     */
    public void setMediumImageSide(int mediumImageSide) {
        this.mediumImageSide = mediumImageSide;
    }

    /**
     * 返回压缩的小图片最大宽度或高度。
     * 
     * @return 压缩的小图片最大宽度或高度。
     */
    public int getSmallImageSide() {
        return smallImageSide;
    }

    /**
     * 设置压缩的小图片最大宽度或高度。
     * 
     * @param smallImageSide 要设置的 压缩的小图片最大宽度或高度。
     */
    public void setSmallImageSide(int smallImageSide) {
        this.smallImageSide = smallImageSide;
    }

    /**
     * 返回压缩的缩略图的最大宽度或高度。
     * 
     * @return 压缩的缩略图的最大宽度或高度。
     */
    public int getThumbImageSide() {
        return thumbImageSide;
    }

    /**
     * 设置压缩的缩略图的最大宽度或高度。
     * 
     * @param thumbImageSide 要设置的 压缩的缩略图的最大宽度或高度。
     */
    public void setThumbImageSide(int thumbImageSide) {
        this.thumbImageSide = thumbImageSide;
    }

    /**
     * 返回压缩的方块图的最大边长。
     * 
     * @return 压缩的方块图的最大边长。
     */
    public int getSquareImageSide() {
        return squareImageSide;
    }

    /**
     * 设置压缩的方块图的最大边长。
     * 
     * @param squareImageSide 要设置的 压缩的方块图的最大边长。
     */
    public void setSquareImageSide(int squareImageSide) {
        this.squareImageSide = squareImageSide;
    }

    /**
     * 返回压缩生成的大图片路径。
     * 
     * @return 压缩生成的大图片路径。
     */
    public String getBigImage() {
        return bigImage;
    }

    /**
     * 设置压缩生成的大图片路径。
     * 
     * @param bigImage 要设置的 压缩生成的大图片路径。
     */
    public void setBigImage(String bigImage) {
        this.bigImage = bigImage;
    }

    /**
     * 返回压缩生成的中型图片路径。
     * 
     * @return 压缩生成的中型图片路径。
     */
    public String getMediumImage() {
        return mediumImage;
    }

    /**
     * 设置压缩生成的中型图片路径。
     * 
     * @param mediumImage 要设置的 压缩生成的中型图片路径。
     */
    public void setMediumImage(String mediumImage) {
        this.mediumImage = mediumImage;
    }

    /**
     * 返回压缩生成的小图片路径。
     * 
     * @return 压缩生成的小图片路径。
     */
    public String getSmallImage() {
        return smallImage;
    }

    /**
     * 设置压缩生成的小图片路径。
     * 
     * @param smallImage 要设置的 压缩生成的小图片路径。
     */
    public void setSmallImage(String smallImage) {
        this.smallImage = smallImage;
    }

    /**
     * 返回压缩生成的缩略图路径。
     * 
     * @return 压缩生成的缩略图路径。
     */
    public String getThumbImage() {
        return thumbImage;
    }

    /**
     * 设置压缩生成的缩略图路径。
     * 
     * @param thumbImage 要设置的 压缩生成的缩略图路径。
     */
    public void setThumbImage(String thumbImage) {
        this.thumbImage = thumbImage;
    }

    /**
     * 返回压缩生成的方块图路径。
     * 
     * @return 压缩生成的方块图路径。
     */
    public String getSquareImage() {
        return squareImage;
    }

    /**
     * 设置压缩生成的方块图路径。
     * 
     * @param squareImage 要设置的 压缩生成的方块图路径。
     */
    public void setSquareImage(String squareImage) {
        this.squareImage = squareImage;
    }
}
